package GUI;

/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
import java.io.*; 
import java.util.Date;
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.filechooser.*; 
/*
* FileChooserDemo.java uses these files:
* images/Open16.gif
* images/Save16.gif
*/
public class ReportForm extends JPanel implements ActionListener 
{ 
	static private final String newline = "\n"; 
	JButton openButton, saveButton;
	JTextArea log;
	JFileChooser fc;
	public ReportForm() 
	{ 
		super(new BorderLayout()); 
		//Create the log first, because the action listeners 
		//need to refer to it. 
		log = new JTextArea(5,20); 
		log.setMargin(new Insets(5,5,5,5)); 
		JScrollPane logScrollPane = new JScrollPane(log);
		
		//Create a file chooser 
		fc = new JFileChooser(); 
//Uncomment one of the following lines to try a different 
//file selection mode. The first allows just directories 
//to be selected (and, at least in the Java look and feel, 
//shown). The second allows both files and directories 
//to be selected. If you leave these lines commented out, 
//then the default mode (FILES_ONLY) will be used. 
// 
//fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
//fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); 
//Create the open button. We use the image from the JLF 
//Graphics Repository (but we extracted it from the jar). 
		openButton = new JButton("Open a File...", createImageIcon("images/Open16.gif")); 
		openButton.addActionListener(this); 
//Create the save button. We use the image from the JLF 
//Graphics Repository (but we extracted it from the jar). 
		saveButton = new JButton("Save a File...", createImageIcon("images/Save16.gif")); 
		saveButton.addActionListener(this); 
//For layout purposes, put the buttons in a separate panel 
		JPanel buttonPanel = new JPanel(); //use FlowLayout 
		buttonPanel.add(openButton);
		buttonPanel.add(saveButton);
//Add the buttons and the log to this panel. 
		add(buttonPanel, BorderLayout.PAGE_START); 
		add(logScrollPane, BorderLayout.CENTER); 
	}
	
	public void setText(String str)
	{
		Date date = new Date();
		log.setText(date.toString()+"\n"+"CCRM Report:\n"+str);
	}
public void actionPerformed(ActionEvent e)
{ 
	//Handle open button action. 
	if (e.getSource() == openButton) 
	{ 
		int returnVal = fc.showOpenDialog(ReportForm.this); 
		if (returnVal == JFileChooser.APPROVE_OPTION) 
		{ 
					
		} 
		else 
		{ 
			log.append("Open command cancelled by user." + newline); 
		}
		log.setCaretPosition(log.getDocument().getLength());
		//Handle save button action. 
	} 
	else if (e.getSource() == saveButton) 
	{ 
		int returnVal = fc.showSaveDialog(ReportForm.this); 
		if (returnVal == JFileChooser.APPROVE_OPTION) 
		{ 
					
			File file = fc.getSelectedFile(); 
			System.out.println(fc.getSelectedFile());
			try
			{
			  FileOutputStream fs = new FileOutputStream(fc.getSelectedFile()+".doc");
		      OutputStreamWriter out = new OutputStreamWriter(fs);            
		      out.write(log.getText());
		      out.close();
		    }
		    catch (IOException e1){
		      System.err.println(e1);
		    }
			//This is where a real application would save the file. 
			log.append("Saving: " + file.getName() + "." + newline); 
		} 
		else 
		{ 
			log.append("Save command cancelled by user." + newline); 
		}
		log.setCaretPosition(log.getDocument().getLength());
	}
}
/** Returns an ImageIcon, or null if the path was invalid. */ 
protected static ImageIcon createImageIcon(String path) 
{ 
	java.net.URL imgURL = ReportForm.class.getResource(path); 
	if (imgURL != null) 
	{ 
		return new ImageIcon(imgURL); 
	} 
	else 
	{ 
		System.err.println("Couldn't find file: " + path); 
		return null; 
	}
}
}